package com.growthserver.mapper;


import com.growthserver.entity.TMemberLevelEntity;
import com.growthserver.entity.TTaskComboEntity;
import com.growthserver.entity.TTaskRuleDetailEntity;
import com.growthserver.entity.TTaskRuleDoRecordEntity;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

public interface IntegralGrowthMapper {

//    根据用户I的,查询用户等级类型
    String selectUserLvl(@Param("userId") String userId,@Param("memberType")String memberType);

//    查询模板,根据模板类型,用户类型
    List<TTaskRuleDetailEntity> selectByMouldAndUserType(@Param("userType") String userType,
                                                         @Param("memberNum") String memberNum,
                                                         @Param("taskType") String taskType);

    List<TTaskComboEntity> selectTaskComboInfo(String type);

    /**
     *规则计算连续签到次数
     * @param type
     * @return
     */
    List<TTaskRuleDoRecordEntity> selectByTypeNumTDayContinuous(@Param("userId")String userId,@Param("type") String type);

    /**
     * 拉新任务
     * @param type
     * @return
     */
    List<TTaskRuleDoRecordEntity> selectPullNewTask(@Param("userId") String userId,@Param("type") String type);

    /**
     * 不连续周
     * @param type
     * @return
     */
    List<TTaskRuleDoRecordEntity> selectByTypeNumTNotWeekContinuous(String type);

    /**
     * 获取周时间结束最后一条
     * @param type
     * @return
     */
    TTaskRuleDoRecordEntity selectByTypeNumTNotWeekEndContinuous(String type);

    /**
     * 不连续月
     * @param type
     * @return
     */
    List<TTaskRuleDoRecordEntity> selectByTypeNumTNotMonthContinuous(String type);

    /**
     *
     * @param type
     * @return
     */
    TTaskRuleDoRecordEntity selectTTaskRuleDoRecordExpDate(@Param("userId")String userId ,@Param("type") String type);

    /**
     * 规则计算不连续签到次数
     * @param type
     * @return
     */
    List<TTaskRuleDoRecordEntity> selectByTypeNumTNotContinuous(String type);


    /**
     * 任务规则积分期时间
     */
    String selectTaskRuleByTaskRuleId(@Param("taskId") String taskId);

    /**
     * 数据入库到日志表
     */
     void insertRuleLog(TTaskRuleDoRecordEntity tTaskRuleDoRecordEntity);

    /**
     * 积分预算校验
     * @param budgetRequestNum
     * @param integralValue
     */
     String integralBudgetCheck(@Param("budgetRequestNum") String budgetRequestNum,@Param("integralValue") String integralValue);
     void updateIntegralBudge(@Param("budgetRequestNum") String budgetRequestNum,@Param("integralValue") String integralValue);

    /**
     * 通过USERID 查询用户总积分,成长值
     * @param userId
     * @return
     */
    HashMap<String,String> selectTotalIntegralGrowthValue(@Param("userId") String userId);

    /**
     * 根据levelNum 查询等级
     * @param levelNum
     * @return
     */
    String selectByLevelEnum(@Param("levelNum") String levelNum);

    /**
     * 过期积分,ID,过期积分值
     * @return
     */
    List<TTaskRuleDoRecordEntity> selectWillExpIntegralValue(@Param("userId") String userId);

    void tTaskRuleDoRecordUpdateById(@Param("taskRuleRecordId") String taskRuleRecordId,
                                     @Param("useFlag") String useFlag,
                                     @Param("remainIntegralValue") String remainIntegralValue,
                                     @Param("deductBatchNum") String deductBatchNum);


    /**
     *
     * @param userType
     * @return
     */
    List<TMemberLevelEntity> selectALLEquityGrowth(@Param("userType")String userType);
}
